<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
	body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
</style>
<script type="text/javascript" src=jquery-3.2.1.js></script>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=3.0&ak=c1tTp3rK2l7tg8EBLTdgKEjAAGGVcYli"></script>
<script type="text/javascript" src="http://api.map.baidu.com/library/TextIconOverlay/1.2/src/TextIconOverlay_min.js"></script>
<script type="text/javascript" src="http://api.map.baidu.com/library/MarkerClusterer/1.2/src/MarkerClusterer_min.js"></script>

<title>地图展示</title>
</head>
<body>
	<div id="allmap"></div>
</body>
<script type="text/javascript">

	var map = new BMap.Map("allmap");    // 创建Map实例
	map.centerAndZoom("金华",14);

	map.addControl(new BMap.MapTypeControl()); //添加地图类型控件
	map.setCurrentCity("金华"); // 设置地图显示的城市 此项是必须设置的

	map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
	
	map.addEventListener("click",function(e){
		pt=e.point;
		var geoc = new BMap.Geocoder();    
		geoc.getLocation(pt, function(rs){
			var addComp = rs.addressComponents;
			console.log('纬度'+pt.lat+',经度'+pt.lng+':'+addComp.street);
    	});        
	});
	// 添加右键菜单
	var menu = new BMap.ContextMenu();
	var txtMenuItem = [
		{text:'放大',callback:function(e){map.zoomIn();}},
		{text:'缩小',callback:function(){map.zoomOut();}},
		{text:'<hr>',callback:function(){;}},
		{text:'逆',callback:function(){
			var latStart = 29.040693;
			var latEnd = 29.149769;
			var lngStart = 119.576546;
			var lngEnd = 119.733929;
			pt=new BMap.Point(lngStart,latStart);
			var geoc = new BMap.Geocoder();  
			var func_next_pt=function (pt) {
				if(pt.lat>latEnd){
					pt.lat=latStart;
					pt.lng+=0.001;
				}
				else{
					pt.lat+=0.001;
				}
				return pt;
			}
			var func_getLoc=function(pt,cb){
				if(pt.lng>lngEnd)return;
				$.get("result",{lat:pt.lat.toFixed(6),lng:pt.lng.toFixed(6)},function(data) {
					if(!data.existed)
						geoc.getLocation(pt,cb);
					else
						func_getLoc(func_next_pt(pt),cb);
				});
			};
			var func_cb=function(rs){
				var pt2=rs.point;
				var addComp = rs.addressComponents;
				$.post("result",{lat:pt2.lat.toFixed(6),lng:pt2.lng.toFixed(6),street:addComp.street},function(data) {});
				func_getLoc(func_next_pt(pt2),func_cb);   
			};
			func_getLoc(pt,func_cb);
			//geoc.getLocation(pt,func_cb);        
		}}
	];
	for(var i=0; i < txtMenuItem.length; i++){
		menu.addItem(new BMap.MenuItem(txtMenuItem[i].text,txtMenuItem[i].callback,100));
	}
	map.addContextMenu(menu);

// lat: 29.040693 - 29.149769
// lng: 119.576546 - 119.733929
	
	// 左上角添加一个控件
	function ZoomControl(){
		// 默认停靠位置和偏移量
		this.defaultAnchor = BMAP_ANCHOR_TOP_LEFT;
		this.defaultOffset = new BMap.Size(10, 10);
	}
	// 通过JavaScript的prototype属性继承于BMap.Control
	ZoomControl.prototype = new BMap.Control();

	// 自定义控件必须实现自己的initialize方法,并且将控件的DOM元素返回
	// 在本方法中创建个div元素作为控件的容器,并将其添加到地图容器中
	ZoomControl.prototype.initialize = function(map){
		// 创建一个DOM元素
		var div = document.createElement("div");
		// 添加文字说明
		div.appendChild(document.createTextNode("锁定"));
		// 设置样式
		div.style.cursor = "pointer";
		div.style.border = "1px solid gray";
		div.style.backgroundColor = "white";
		// 绑定事件,点击一次放大两级
		div.onclick = function(e){
			var overlays=map.getOverlays();
			for ( var x in overlays) {
				var o=overlays[x];
				if("signal" in o )
				o.disableDragging();
			}
		}
		// 添加DOM元素到地图中
		map.getContainer().appendChild(div);
		// 将DOM元素返回
		return div;
	}
	// 创建控件
	var myZoomCtrl = new ZoomControl();
	// 添加到地图当中
	map.addControl(myZoomCtrl);
	</script>	
</html>
